"""
插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴，但它的原理应该是最容易理解的了，因为只要打过扑克牌的人都应该能够秒懂。
插入排序是一种最简单直观的排序算法，它的工作原理是通过构建有序序列，对于未排序数据，在已排序序列中从后向前扫描，找到相应位置并插入。
步骤：
    将第一待排序序列第一个元素看做一个有序序列，把第二个元素到最后一个元素当成是未排序序列。

    从头到尾依次扫描未排序序列，将扫描到的每个元素插入有序序列的适当位置。（如果待插入的元素与有序序列中的某个元素相等，则将待插入元素插入到相等元素的后面。）
"""


def insert_sort(wait_sort_list: list) -> list:
    for i in range(len(wait_sort_list)):
        pre_index = i - 1
        current = wait_sort_list[i]
        while pre_index >= 0 and wait_sort_list[pre_index] > current:
            wait_sort_list[pre_index + 1] = wait_sort_list[pre_index]
            pre_index -= 1
        wait_sort_list[pre_index + 1] = current
    return wait_sort_list


if __name__ == '__main__':
    print(insert_sort([54, 1, 78, 2, 6, 32]))
